#include <iostream>
using namespace std;
long long sum = 0;//逆序数的个数 
void MergeSort(int * arr,int s,int e,int *temp);//归并排序
void MergeAndCountNum(int * arr,int s,int mid,int e,int *temp); //归并有序序列并计算逆序数的个数 

 
void MergeSort(int * arr,int s,int e,int * temp){//归并排序 
	if(s < e){ 
		int mid = s + (e - s)/2;
		MergeSort(arr,s,mid,temp);
		MergeSort(arr,mid+1,e,temp);
		MergeAndCountNum(arr,s,mid,e,temp);
	}
}
void MergeAndCountNum(int * arr,int s,int mid,int e,int * temp){//归并有序序列并计算逆序数的个数 
	int p1 = s, p2 = mid +1,index = 0;
	while(p1 <= mid && p2 <= e){
		if(arr[p1] < arr[p2])
			temp[index++] = arr[p1++];
		else{
			temp[index++] = arr[p2++];
			sum += mid - p1 +1;
		}
	}
	while(p1 <= mid)
		temp[index++] = arr[p1++];
	while(p2 <= e)
		temp[index++] = arr[p2++];
	for(int i = 0;i<e - s +1;++i)
		arr[s+i] = temp[i];
}
int main(){
	int a[100001],b[100001],n;
	cin >> n;
	for(int i=0;i<n;++i)
		cin >> a[i];
	MergeSort(a,0,n-1,b);
	cout << sum ;
	return 0;
} 
// 对于一个N长的数组，遍历数组，将数组的每两项进行比较，数组的第一项需要比较（N-1）次
// 数组的最后一项需要比较0次，
// n-1+n-2+…+2+1+0
// 一共需要比较n（n-1）/2次，算法的时间复杂度为O(n^2)